package _0_Xorm框架

//将结构体映为数据库的一张表
/*名称映射规则主要负责结构体名称到表名和结构体 field 到表字段的名称映射
SnakeMapper 支持struct为驼峰式命名，表结构为下划线命名之间的转换，这个是默认的Maper；
SameMapper 支持结构体名称和对应的表名称以及结构体field名称与对应的表字段名称相同的命名；
GonicMapper 和SnakeMapper很类似，但是对于特定词支持更好，比如ID会翻译成id而不是i_d。
当前 SnakeMapper 为默认值，如果需要改变时，在 engine 创建完成后使用
	engine.SetMapper(names.GonicMapper{})
	names.NewPrefixMapper(names.SnakeMapper{}, "prefix") 可以创建一个在 SnakeMapper 的基础上在命名中添加统一的前缀
		tbMapper := names.NewPrefixMapper(names.SnakeMapper{}, "prefix_")
		engine.SetTableMapper(tbMapper) 执行之后，结构体 type User struct 默认对应的表名就变成了 prefix_user 了

同时需要注意的是：
如果你使用了别的命名规则映射方案，也可以自己实现一个 Mapper。
表名称和字段名称的映射规则默认是相同的，当然也可以设置为不同，如：
	engine.SetTableMapper(names.SameMapper{})
	engine.SetColumnMapper(names.SnakeMapper{})

Go与字段类型对应表:
go type's kind		                                        xorm type
implemented Conversion	Text
int, int8, int16, int32, uint, uint8, uint16, uint32		Int
int64, uint64		                                        BigInt
float32		                                                Float
float64		                                                Double
complex64, complex128                                       Varchar(64)
[]uint8		                                                Blob
array, slice, map except []uint8                            Text
bool	                                                   	Bool
string		                                                Varchar(255)
time.Time		                                            DateTime
cascade struct	primary key field value                 	BigInt
struct	                                                    Text
Others		                                                Text
*/

// Column 属性定义
type Aser struct {
	Id   int64
	Name string `xorm:"varchar(25) notnull unique 'usr_name' comment('姓名')"`
}

//name	当前field对应的字段的名称
//pk	是否是Primary Key
//autoincr	是否是自增
//[not ]null 或 notnull	是否可以为空
//unique或unique(uniquename) 是否是唯一
//index或index(indexname)	是否是索引
//-	这个Field将不进行字段映射
//->	这个Field将只写入到数据库而不从数据库读取
//<-	这个Field将只从数据库读取，而不写入到数据库
//created	这个Field将在Insert时自动赋值为当前时间
//updated	这个Field将在Insert或Update时自动赋值为当前时间
//deleted	这个Field将在Delete时设置为当前时间，并且当前记录不删除
//version	这个Field将会在insert时默认为1，每次更新自动加1
//default 0或default(0)	设置默认值，紧跟的内容如果是Varchar等需要加上单引号
//json	表示内容将先转成Json格式，然后存储到数据库中，数据库中的字段类型可以为Text或者二进制
//comment	设置字段的注释（当前仅支持mysql）
